// 这里就是存放我们发送请求的方法
import axios from 'axios';
import config from '@/config/url.config';
// 导入本地持久化方法
import {
  getItem,
  setItem,
} from './storage';

// 创建发送请求的接口实例
const request = axios.create({
  baseURL: config.baseURL,
});

// 添加请求拦截器
// 定义请求白名单
const whiteList = ['login'];
request.interceptors.request.use(function (con) {
  // 判断用户是否登录并且是否有token值，有得话下面发请求是需要携带的
  if (!whiteList.includes(con.url) && getItem(config.token)) {
    //   这个时候携带请求头,本地存储的是键值对的对象，而这里我们需要拼接token值，所以取值
    con.headers.Authorization = `${getItem(config.token).token}`;
  }
  return con;
},
function (error) {
  console.log(11);
  console.dir(error);
  return Promise.reject(error);
});

// 添加响应拦截器
request.interceptors.response.use(function (response) {
  console.dir(response.data);
  if (response.data.code === 401) {
    //   如果状态码是401,那么就清空本地token,让用户强行跳转到login页面
    setItem(null, config.token);
  }
  return response;
}, function (error) {
  console.log(33);
  console.dir(error);
  return Promise.reject(error);
});

// 导出axios实例
export default request;
